package com.stone.design.mode.observer;

import org.springframework.lang.NonNull;

/**
 * 观察者
 *
 * @param <T> 观察者主体对象
 * @author Mr_wenpan@163.com 2021/11/30 3:19 下午
 */
public interface Observer<T> {

    /**
     * 观察者顺序
     *
     * @return default 0
     */
    default int order() {
        return 0;
    }

    /**
     * 被观察对象有事件发生时的回调方法
     *
     * @param target 变化主体
     * @param args   参数
     */
    void onListener(@NonNull T target, Object... args);

}